<?php
namespace app\common\controller;

require_once __DIR__.'/../../../vendor/autoload.php';
use TencentCloud\Common\Credential;
use TencentCloud\Common\Profile\ClientProfile;
use TencentCloud\Common\Profile\HttpProfile;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Sms\V20210111\SmsClient;
use TencentCloud\Sms\V20210111\Models\SendSmsRequest;
use think\cache\driver\Redis;
use think\Db;

class Sms
{
    public function sendSms($phone, $templateParams){
        try {
            // 实例化认证对象，传入腾讯云账户的SecretId和SecretKey
            $cred = new Credential(env('TENCENT_SECRET_ID'), env('TENCENT_SECRET_KEY'));

            // 实例化HTTP选项
            $httpProfile = new HttpProfile();
            $httpProfile->setEndpoint("sms.tencentcloudapi.com");  // 指定接入区域域名

            // 实例化客户端配置对象
            $clientProfile = new ClientProfile();
            $clientProfile->setHttpProfile($httpProfile);

            // 实例化SMS客户端对象
            $client = new SmsClient($cred, "ap-guangzhou", $clientProfile); // 第二个参数是地域信息

            // 实例化请求对象
            $req = new SendSmsRequest();

            // 设置短信应用ID
            $req->SmsSdkAppId = env('TENCENT_SDK_APP_ID');  // 替换为您的SDK AppID

            // 设置签名内容
            $req->SignName = env('TENCENT_SIGN_NAME');  // 替换为您的短信签名

            // 设置模板ID
            $req->TemplateId = env('TEMPLATE_ID');  // 替换为您的模板ID

            // 设置模板参数（根据模板需要）
            $req->TemplateParamSet = $templateParams;  // 模板参数，如验证码
            // 设置手机号（需带国际区号，如+86）
            $req->PhoneNumberSet = array("+86".$phone);  // 替换为目标手机号

            // 设置SessionContext（可选）
//            $req->SessionContext = "test";

            // 发送短信
            $resp = $client->SendSms($req);
            // 输出JSON格式的响应
            return json_decode($resp->toJsonString(),true)['SendStatusSet'][0];
        }
        catch(TencentCloudSDKException $e) {
            return $e;
        }
    }
}
